# class Person:
#     name = None
#     age = None
#
#     # 构造方法用于完成对象的初始化
#     def __init__(self, name, age):
#         # 把接收到的属性赋值给本类的属性
#         self.name = name
#         self.age = age
#         print('我是构造方法')
#
#     def __init__(self, name):
#         print('我是构造方法')
#
#
# """
#     python和Java不同只能有一个构造函数
#     如果有多个构造方法，最后一个构造器会生效
# """
#
# # p1 = Person('张三', 20) 会报错 因为会执行最后一个构造方法，你传递了三个参数过去，但是构造器只接收两个 因为还有一个self是隐式传递的
# # 所有有三个参数
# p1 = Person('张三')
# print(p1.name, p1.age)


class Person:
    # 构造方法用于完成对象的初始化
    def __init__(self, name, age):
        # 把接收到的属性赋值给本类的属性
        # python支持动态生成对象属性，即使没有定义这两个属性
        # 会把接收到的值 自动的赋值给name和age
        self.name = name
        self.age = age
p1 = Person('张三',1)
print(p1.name, p1.age)


# 构造方法不能有返回值